package com.zzl.saobei.pay;

import com.alibaba.fastjson.JSON;
import com.saobei.open.sdk.DefaultSaobeiApiClient;
import com.saobei.open.sdk.SaobeiApiClient;
import com.saobei.open.sdk.model.requst.trade.SaobeiBarcodePayRequest;
import com.saobei.open.sdk.model.response.trade.SaobeiBarcodePayResponse;

public class Saobei {

    public static final String PAY_VER = "110";//版本号
    public static final String KEY = "";//机构秘钥,扫呗分配
    public static final String ACCESS_TOKEN = "";//支付秘钥,扫呗分配
    public static final String INST_NO = "";//机构号,扫呗分配
    public static final String MERCHANT_NO = "";//商户号,扫呗分配
    public static final String TERMINAL_ID = "";//终端号,扫呗分配

    public static void main(String[] args) throws Exception {
        barcodepay();//付款码支付
    }

    //付款码支付
    private static void barcodepay() throws Exception {
        try {
            //创建client
            SaobeiApiClient<SaobeiBarcodePayRequest, SaobeiBarcodePayResponse> client = new DefaultSaobeiApiClient<>(ACCESS_TOKEN);
            //创建requst
            SaobeiBarcodePayRequest requst = new SaobeiBarcodePayRequest();
            requst.setPay_ver(PAY_VER);//版本号
            requst.setPay_type("020");//支付方式，010微信，020 支付宝，060qq钱包，080京东钱包，090口碑，100翼支付，110银联二维码，140和包支付（仅限和包通道），000自动识别类型
            requst.setService_id("010");//接口类型，当前类型010
            requst.setMerchant_no(MERCHANT_NO);//商户号
            requst.setTerminal_id(TERMINAL_ID);//终端号
            requst.setTerminal_trace("202003252204310000");//终端流水号，填写商户系统的订单号
            requst.setTerminal_time("20200325220431");//终端交易时间，yyyyMMddHHmmss，全局统一时间格式
            requst.setAuth_no("282216345385848623");//授权码
            requst.setTotal_fee("1");//金额，单位分
            //发送请求
            System.out.println("请求报文:" + JSON.toJSONString(requst));
            SaobeiBarcodePayResponse response = client.execute(requst);
            System.out.println("返回报文:" + JSON.toJSONString(response));
            //处理响应或异常
            if ("01".equals(response.getReturn_code()) && "01".equals(response.getResult_code())) {
                System.out.println("调用成功");
            } else {
                System.err.println("调用失败，原因：" + response.getReturn_msg());
            }
        } catch (Exception e) {
            System.err.println("调用遭遇异常，原因：" + e.getMessage());
            throw new RuntimeException(e.getMessage(), e);
        }
    }

}
